Conventional hardware platforms sometimes support concurrent video encoding and decoding. To implement such concurrent video encoding and decoding, common resources need to be shared between encode and decode tasks. While supporting concurrent video encoding and decoding tasks on one hardware platform, a decoding process is typically defined for worse case conditions (i.e., a worst case bitstream), which is usually worse than a typical case. Defining a decoding process for worst case conditions is even more prominent in newer video standards, such as H.264/MPEG-4.
Conventional approaches provide concurrent encoding with a fixed cycle budget based on the worst case decoding. When decoding typical bitstreams, a relatively large amount of performance (i.e., CPU cycles and memory bandwidth) will be wasted if the encoder is designed to use a fixed cycle budget based on the worst case decoding.
It would be desirable to provide a method and/or apparatus to implement an adaptive video encoder to adapt to available CPU cycles and memory bandwidth for concurrent video encoding and decoding.